=========================================================================
ISTRUZIONI 
========================================================================

Il tar file del secondo frammento comprende i seguenti file

$$ tar tvf lsokit_f2MSG.tar

MSG/src/README-2
MSG/src/Makefile
MSG/src/DATA/logtest.check
MSG/src/DATA/logtest.dat





-----------------------------------------------
Descrizione dei file contenuti nel kit
-----------------------------------------------

README-2		: questo file

Makefile		: makefile per il test finale dei primi 2 frammenti e la
			  consegna  
			  (NON MODIFICARE se non nelle parti richieste)


DATA/logtest.check :     file di dati ed output atteso per il test
DATA/logtest.dat 
			   (NON MODIFICARE)


------------------------------------------------
Cosa deve essere realizzato
------------------------------------------------

Il secondo frammento prevede la realizzazione di uno script bash (logpro) 
che elabora off-line il file di log  delle mail inviate e calcola il numero di caratteri inviati da ciascun utente. Lo script si attiva come:

  $ ./logpro logfile 

dove logfile e' un file di testo (ASCII) che contiene i messaggi 
inviati secondo il formato

mittente:destinatario:testo

dove
- "mittente" e' il nome dell'utente mittente
- "destinatario" e' il nome dell'utente destinatario
- "testo" e' il testo del messaggio inviato

I messaggi sono registrati nel file di log separati da un ritorno carrello 
('\n')

Lo script deve controllare la validit\`a dei suoi argomenti, scorrere
il file logfile e per ogni utente deve calcolare il numero complessivo dei 
caratteri inviati in tutti i messaggi presenti nel log di cui risulta mittente.

Il costo deve essere stampato su standard output nel formato

utente numero_caratteri

la stampa degli utenti deve essere nello stesso ordine lessicografico 
del comando sort (vedi file logtest.check).

L'idea e' quella di utilizzare lo script a fine giornata per calcolare il 
traffico generato per fini statistici o per addebitare il costo del 
traffico rilevato. 





----------------------------------------------------------------------------
Apertura, chiusura e lettura di file in BASH
----------------------------------------------------------------------------
L'apertura e la chiusura di un file puo' essere effettuata in bash attreverso
la 'exec' in particolare:

   exec n< file_name    

apre il file file_name in lettura e gli assegna il file descriptor 'n' 

   exec n> file_name

apre il file file_name in scrittura (file descriptor n)

   exec n<> file_name

apre in lettura e scrittura. Invece per chiudere il file descriptor n

   exec n>&-

Dopo aver aperto il file \`e possibile leggerlo utilizzando il comando 'read'
con opzione -u numero_descrittore.

------------------
Come procedere :
-----------------

0) leggere attentamente questo README 

1) analizzare accuratamente il file di input (logtest.dat) e
   l'ouput atteso (logtest.check) 

2) implementare lo script richiesto, con le opportune sottofunzioni in un file
   './logpro' nella directory MSG/src
   testando incrementalmente il codice prodotto

3) testare infine lo script con 

       bash:~$ make test21

  NOTA: (1) tutti i file sviluppati per la soluzione si devono trovare nella
  directory MSG/src
  (2) E' importante che il test venga effettuato solo su uno script 
  gia' ragionevolmente corretto  altrimenti i risultati possono essere di
  difficile interpretazione, fuorvianti o inutili.

4) preparare la documentazione: ovvero commentare adeguatamente il file che
   contiene la soluzione aggiungendo la dichiarazione di originalita'

   # file: mailscript
   #    \author Nino Bixio
   #  Si dichiara che il contenuto di questo file e' in ogni sua parte opera
   #  originale dell' autore.  

5) aggiornare il file "gruppo.txt" con nome e dati

6) consegnare il file ESCLUSIVAMENTE eseguendo

      bash:~$ make consegna2

   e seguendo le istruzioni. 
   Per la consegna e' necessaria l'utility "mpack" installata solo nelle
   macchine dei laboratori H, M ed I. Per consegne da altre macchine e'
   possibile scaricare il binario di 'mpack' dal sito del corso (attenzione:
   richiede che il mailer sia configurato correttamente).

   Per consegne da altre macchine e' possibile scaricare il binario di
   'mpack' dal sito del corso oppure semplicemente allegare il tar
   file creato dal make consegna ad un normale messaggio di mail con
   subject "lso10: consegna secondo frammento".

   Tutte le consegne verranno confermate con un messaggio di reply
   all'indirizzo da cui e' stato inviato il tar entro 2/3
   giorni. In caso questo non si verifichi contattare il docente.
   
---------------------------------------
 NOTE IMPORTANTI: LEGGERE ATTENTAMENTE
---------------------------------------

1) gli eleborati non consegnati con "make consegna2" non verranno accettati

2) tutti gli elaborati verranno confrontati fra di loro con tool automatici
   per stabilire eventali situazioni di PLAGIO. Se tali situazioni si
   verificheranno *tutti* gli elaborato coinvolti verranno annullati con
   conseguente perdita del bonus. 

3) Tutti gli studenti coinvolti in un episodio di PLAGIO comprovato dovranno
   re-implementare il frammento incriminato e saranno sottoposti ad una prova
   orale supplementare. In caso di recidive verranno esclusi dalla
   possibilita' di sostenere l'esame per TUTTO IL RESTO DELL'ANNO ACCADEMICO
   IN CORSO.

4) Chi in sede di orale risulta palesemente non essere l'autore del software
   consegnato in uno dei frammenti verra' escluso dalla possibilita' di
   sostenere l'esame per TUTTO IL RESTO DELL'ANNO ACCADEMICO IN CORSO.

5) Tutti i comportamenti scorretti ai punti 3 e 4 verranno segnalati
   ufficialmente al presidente del corso di laurea, che si riserva di
   decidere azioni disciplinari supplementari a quelle sopra descritte.

----------------------------
 VALUTAZIONE DELL'ESERCIZIO:
----------------------------

Gli studenti che consegnano una versione funzionante e ragionevolmente
corretta dello script entro la data di scadenza prevista su WEB
accumulano un bonus di 2 punti che verra' sommato al voto finale (vedi
lucidi lezioni ed esercitazioni).

La qualita' del codice consegnato verra' valutata come
parte del progetto finale e contribuira' alla votazione assegnata al progetto.
Eventuali caratteristiche in piu' rispetto a quelle strettamente richieste
dalle specifiche date verranno valutate in questa sede.
